b61cc9389219a62ea02067e9e05bae4c3ae37936,lifecyclebinder-processor/src/main/java/it/codingjam/lifecyclebinder/BinderGenerator.java,BinderGenerator,generateBindMethod,#LifeCycleAwareInfo#TypeName#,129
Before Change
private MethodSpec generateBindMethod(LifeCycleAwareInfo lifeCycleAwareInfo, TypeName objectGenericType) {
MethodSpec.Builder builder = MethodSpec.methodBuilder("bind")
.addModifiers(PUBLIC, STATIC)
.returns(void.class)
.addParameter(ClassName.get(LifeCycleAwareCollector.class), "collector")
.addParameter(objectGenericType, "view", FINAL)
.addCode(generateBindMethodBody(lifeCycleAwareInfo));
After Change
private MethodSpec generateBindMethod(LifeCycleAwareInfo lifeCycleAwareInfo, TypeName objectGenericType) {
boolean implementsLifeCycleAware = implementsLifeCycleAware(ClassName.get(lifeCycleAwareInfo.element.asType()));
MethodSpec.Builder builder = MethodSpec.methodBuilder("bind").addModifiers(PUBLIC, STATIC);
String lifeCycleAwareVariableName;
boolean nestedObject;
if (implementsLifeCycleAware) {
builder = builder
.returns(objectGenericType)
.addParameter(ClassName.get(LifeCycleAwareCollector.class), "collector")
.addParameter(objectGenericType, "lifeCycleAware")
.addParameter(String.class, "key")
.addParameter(ParameterizedTypeName.get(ClassName.get(Callable.class), objectGenericType), "factory")
.addParameter(TypeName.BOOLEAN, "addInList");
builder.addStatement("$T ret = collector.getOrCreate(lifeCycleAware, key, factory)", objectGenericType);
lifeCycleAwareVariableName = "ret";
nestedObject = true;
} else {
builder = builder
.returns(void.class)
.addParameter(ClassName.get(LifeCycleAwareCollector.class), "collector")
.addParameter(objectGenericType, "view", FINAL);
lifeCycleAwareVariableName = "view";
nestedObject = false;
}
builder = builder.addCode(generateBindMethodBody(lifeCycleAwareVariableName, lifeCycleAwareInfo, nestedObject));
if (implementsLifeCycleAware) {
builder
.beginControlFlow("if (addInList)")
.addStatement("collector.addLifeCycleAware(ret)")
.endControlFlow()
.addStatement("return ret");
}